package com.atguigu.kaiser;

/**
 * KaiserDemo
 *
 * @Author: 马伟奇
 * @CreateTime: 2021-02-27
 * @Description:
 */
public class KaiserDemo {
    public static void main(String[] args) {
        // 位移3位
        // 定义原文
        String input = "hello world";
        // 定义密钥 往右边移动3位
        int key = 3;
        // 抽取的快捷键 ctlr + alt + m
        // 加密
        String result =  encryptKaiser(input, key);
        System.out.println("加密："+result);
        // 解密
        String decryptKaiser =  decryptKaiser(result,key);
        System.out.println("解密：" + decryptKaiser);
    }

    /**
     *
     * @param result 表示密文
     * @param key    加密规则
     * @return
     */
    public static String decryptKaiser(String result, int key) {
        char[] chars = result.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char aChar : chars) {
            int code = aChar;
            // 解密，还原
            code -= key;
            // 原文
            char resultCode = (char) code;
            sb.append(resultCode);
        }


        return sb.toString();
    }

    public static String encryptKaiser(String input, int key) {
        char[] chars = input.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char aChar : chars) {
            int code = aChar;
            // 位移3位
            code = code + key;
            // 变成密文
            char newChar = (char) code;
            sb.append(newChar);
        }
        System.out.println(sb.toString());
        return sb.toString();
    }
}